What's Redux !? Redux 是一個用來集中管理state的一個library,
用了Redux我們可以直接取得或修改相同的state,不用再一層一層Component往下傳了!
執行以下指令安裝redux
npm install redux
在App.js的地方鑲上React Redux 的Provider ,且透過redux的createStore來建立store
import { createStore } from "redux";
import reducer from './reducers'
const store = createStore(reducer)
class App extends React.Component {
render() {
return (
<Provider store={store}>
<Component />
</Provider>
);
}
}
上面的程式碼我們會看到在建立store的時候需要傳入reducer (也就是放置action type 並回傳新store的地方),所以我們要建立reducer並傳入
let initialState;
initialState = {
aa:""
};
const reducer = (state = initialState, action) => {
switch (action.type) {
case "action1":
return {
...state,
aa:"123"
};
break;
case "action2":
return {
...state,
aa:"333"
};
break;
default:
return { ...state };
break;
}
};
上述程式碼,我們在switch裡使用到action.type,通常我們會建立一個新的js檔案來放置action
export const action1 = ()=>{
return {type:'action1'}
};
export const action2 = ()=>{
return {type:'action2'}
};
在其他Component連結store的方式 (連結state和dispatch)
連結state
const mapStateToProps = (state) => {
return { aa: state.aa };
};
連結dispatch
const mapDispatchToProps = (dispatch) => {
return {
action1:()=>{dispatch(action1())},
action2:()=>{dispatch(action2())}
};
};
以上是Redux的原理及使用方法的補充,
下一篇要來介紹跟Redux作用很像的React Query ,
小菜鳥個人是覺得React Query相對Redux好用滿多的 (⊙ꇴ⊙)